MyBatisPlus 的 ORM 操作
什么是 Active Record ?
Active Record 是一种数据访问设计模式,它可以帮助你实现数据对象 Object 到关系数据库的映射。在 Active Record 模式中,对象中既有持久存储的数据,也有针对数据的操作。Active Record 模式把数据存取逻辑作为对象的一部分,处理对象的用户知道如何把数据写入数据库,以及从数据库中读出数据。
说白了就是 ORM
Active Record 的主要思想是:
- 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每一个字段在类中都有相应的 Field
- Active Record 同时负责把自己持久化,在 Active Record 中封装了对数据库的访问(CURD)
- Active Record 是一种领域模型(Domain Model)
查询数据
在 MP 中使用 AR 非常简单,只需让实体对象继承 Model<T>
就行了
@Data
public class User extends Model<User> {
// 设置 id 为自增长
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}
然后就能直接使用这个 AR 进行操作表了
@Test
void testSelectById() {
User byId = new User();
byId.setId(2L);
// 现在就能直接取得 id=2 的对象了
User user1 = byId.selectById();
log.info(user1.toString());
}
注意:这个底层还是使用的上面的那个 BaseMapper
public interface UserMapper extends BaseMapper<User> {
}
根据条件查询
@Test
void testSelect() {
User user = new User();
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("age", 25);
List<User> users = user.selectList(wrapper);
}
新增数据
@Test
void testInsertUser() {
User user = new User();
user.setName("李四");
user.setAge(30);
user.setEmail("890@gmail.com");
boolean insert = user.insert();
log.info("是否插入成功:{}" ,insert);
}
修改数据
@Test
void testUpdateUser() {
User user = new User();
user.setAge(30);
user.setId(2L);
boolean update = user.updateById();
log.info("是否修改成功:{}" ,update);
}
删除数据
@Test
void testUpdateUser() {
User user = new User();
user.setId(2L);
boolean delete = user.deleteById();
log.info("是否删除成功:{}" ,delete);
}